#ifndef __PID_H_
#define __PID_H_

/**
 * @brief 增量式PID结构体
 *
 */
typedef struct
{
    float kp; // 比例系数
    float ki; // 积分系数
    float kd; // 微分系数

    float err;      // 本次误差,统一定义为:目标值-实际值
    float last_err; // 上次误差
    float prev_err; // 上上次误差

    float output;     // 本次输出
    float output_max; // 输出最大限幅
    float output_min; // 输出最小限幅
} pid_t;

// PID初始化
extern void pid_init(pid_t *pid, float kp, float ki, float kd, float output_max, float output_min);
// 增量式PID计算
extern float pid_calculate(pid_t *pid, float target, float measure);


extern  pid_t pid_speed; // 速度环PID
extern  pid_t pid_dir;   // 方向环PID

#endif